package middlewares

import (
	"github.com/gin-gonic/gin"
	"github.com/runningwater/gohub/pkg/jwt"
	"github.com/runningwater/gohub/pkg/response"
)

// GuestJWT 强制使用游客身份认证中间件
func GuestJWT() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 检查请求头中是否包含 Authorization 字段
		authHeader := c.GetHeader("Authorization")
		if len(authHeader) > 0 {
			// 如果存在 Authorization 字段，验证 JWT
			_, err := jwt.NewJWT().ParseToken(c)
			if err == nil {
				// 如果 JWT 验证通过，返回 403 错误
				response.Unauthorized(c, "请使用游客身份认证")
				c.Abort()
				return
			}
		}
		// 调用下一个中间件或处理函数
		c.Next()
	}
}
